<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Grid World 蒙特卡洛方法价值函数结果</title>
    <style>
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
            background-color: #f5f5f5;
        }
        .container {
            background-color: white;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        h1 {
            color: #2c3e50;
            text-align: center;
            margin-bottom: 30px;
        }
        h2 {
            color: #34495e;
            border-bottom: 2px solid #3498db;
            padding-bottom: 10px;
        }
        .environment-info {
            background-color: #ecf0f1;
            padding: 20px;
            border-radius: 8px;
            margin-bottom: 20px;
        }
        .value-table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
        }
        .value-table th, .value-table td {
            border: 1px solid #bdc3c7;
            padding: 12px;
            text-align: center;
        }
        .value-table th {
            background-color: #3498db;
            color: white;
        }
        .value-table tr:nth-child(even) {
            background-color: #f8f9fa;
        }
        .visualization {
            text-align: center;
            margin: 30px 0;
        }
        .visualization img {
            max-width: 100%;
            height: auto;
            border: 2px solid #34495e;
            border-radius: 8px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
        }
        .analysis {
            background-color: #e8f5e8;
            padding: 20px;
            border-radius: 8px;
            border-left: 5px solid #27ae60;
        }
        .method-description {
            background-color: #fff3cd;
            padding: 20px;
            border-radius: 8px;
            border-left: 5px solid #ffc107;
            margin-bottom: 20px;
        }
        .code-block {
            background-color: #2c3e50;
            color: #ecf0f1;
            padding: 15px;
            border-radius: 5px;
            font-family: 'Courier New', monospace;
            overflow-x: auto;
            margin: 10px 0;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>🎯 Grid World 蒙特卡洛方法价值函数结果</h1>
        
        <div class="method-description">
            <h2>📚 蒙特卡洛方法简介</h2>
            <p><strong>蒙特卡洛方法</strong>是强化学习中的一种重要算法，通过采样完整的episodes来估计价值函数。它具有以下特点：</p>
            <ul>
                <li><strong>无模型方法</strong>：不需要知道环境的转移概率和奖励函数</li>
                <li><strong>基于采样</strong>：通过大量的episode采样来估计价值</li>
                <li><strong>首次访问</strong>：每个episode中只考虑状态的首次访问</li>
                <li><strong>收敛性</strong>：随着采样数量增加，估计值会收敛到真实价值</li>
            </ul>
        </div>

        <div class="environment-info">
            <h2>🌍 环境信息</h2>
            <ul>
                <li><strong>网格大小</strong>: 3×4</li>
                <li><strong>动作空间</strong>: [0, 1, 2, 3] (上, 右, 下, 左)</li>
                <li><strong>起始状态</strong>: (2, 0) - 左下角</li>
                <li><strong>目标状态</strong>: (0, 3) - 右上角，奖励 +1.0</li>
                <li><strong>陷阱状态</strong>: (1, 3) - 右中，奖励 -1.0</li>
                <li><strong>墙壁状态</strong>: (1, 1) - 不可通行</li>
                <li><strong>折扣因子</strong>: γ = 0.9</li>
                <li><strong>训练episodes</strong>: 8000</li>
            </ul>
        </div>

        <h2>📊 价值函数结果</h2>
        <table class="value-table">
            <thead>
                <tr>
                    <th>状态 (行, 列)</th>
                    <th>价值函数 V(s)</th>
                    <th>状态类型</th>
                    <th>解释</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>(0, 0)</td>
                    <td>0.1164</td>
                    <td>普通状态</td>
                    <td>距离目标较远，价值较低</td>
                </tr>
                <tr>
                    <td>(0, 1)</td>
                    <td>0.2407</td>
                    <td>普通状态</td>
                    <td>接近目标，价值提升</td>
                </tr>
                <tr>
                    <td>(0, 2)</td>
                    <td>0.3718</td>
                    <td>普通状态</td>
                    <td>非常接近目标，价值较高</td>
                </tr>
                <tr style="background-color: #d4edda;">
                    <td>(0, 3)</td>
                    <td>1.0000</td>
                    <td><strong>目标状态</strong></td>
                    <td>终止状态，获得+1奖励</td>
                </tr>
                <tr>
                    <td>(1, 0)</td>
                    <td>-0.0192</td>
                    <td>普通状态</td>
                    <td>价值略为负值</td>
                </tr>
                <tr style="background-color: #343a40; color: white;">
                    <td>(1, 1)</td>
                    <td>N/A</td>
                    <td><strong>墙壁</strong></td>
                    <td>不可通行</td>
                </tr>
                <tr>
                    <td>(1, 2)</td>
                    <td>-0.4316</td>
                    <td>普通状态</td>
                    <td>接近陷阱，价值较低</td>
                </tr>
                <tr style="background-color: #f8d7da;">
                    <td>(1, 3)</td>
                    <td>-1.0000</td>
                    <td><strong>陷阱状态</strong></td>
                    <td>终止状态，获得-1奖励</td>
                </tr>
                <tr style="background-color: #cce5ff;">
                    <td>(2, 0)</td>
                    <td>-0.1581</td>
                    <td><strong>起始状态</strong></td>
                    <td>智能体开始位置</td>
                </tr>
                <tr>
                    <td>(2, 1)</td>
                    <td>-0.3205</td>
                    <td>普通状态</td>
                    <td>价值为负</td>
                </tr>
                <tr>
                    <td>(2, 2)</td>
                    <td>-0.5030</td>
                    <td>普通状态</td>
                    <td>价值较低</td>
                </tr>
                <tr>
                    <td>(2, 3)</td>
                    <td>-0.7519</td>
                    <td>普通状态</td>
                    <td>最低价值，距离陷阱很近</td>
                </tr>
            </tbody>
        </table>

        <div class="visualization">
            <h2>🎨 价值函数可视化</h2>
            <img src="value_function_visualization.png" alt="Grid World Value Function Visualization">
            <p><em>图中显示了每个状态的价值函数值。绿色表示目标状态，红色表示陷阱状态，蓝色表示起始状态，黑色表示墙壁。</em></p>
        </div>

        <div class="analysis">
            <h2>🔍 结果分析</h2>
            <ul>
                <li><strong>价值梯度</strong>：可以看到从目标状态(0,3)向外，价值函数呈现递减趋势，这符合预期。</li>
                <li><strong>最高价值</strong>：目标状态(0,3)具有最高价值1.0（隐含）</li>
                <li><strong>最低价值</strong>：状态(2,3)具有最低价值-0.7519，因为它距离陷阱状态很近</li>
                <li><strong>起始状态</strong>：起始状态(2,0)的价值为-0.1581，表明从这里开始的期望回报为负</li>
                <li><strong>策略含义</strong>：智能体应该尽量向右上方移动，避免向右下方移动</li>
                <li><strong>墙壁影响</strong>：墙壁(1,1)的存在迫使智能体绕行，影响了周围状态的价值</li>
            </ul>
        </div>

        <div class="method-description">
            <h2>⚙️ 算法参数</h2>
            <div class="code-block">
训练episodes: 8000<br>
折扣因子 γ: 0.9<br>
策略: 随机策略 (ε-贪婪策略的特殊情况，ε=1)<br>
方法: 首次访问蒙特卡洛方法<br>
收敛判断: 基于episode数量
            </div>
        </div>

        <div style="text-align: center; margin-top: 30px; color: #7f8c8d;">
            <p>🤖 Generated by Monte Carlo Method for Grid World Environment</p>
            <p>📅 Generated on: <script>document.write(new Date().toLocaleString());</script></p>
        </div>
    </div>
</body>
</html>